
// <copyright file="IDataReaderStrategy.cs" company="Subhadra Software Solutions">
//   
// </copyright>
// <summary>
//   The DataReaderStrategy interface.
// </summary>

namespace SubhadraSolutions.Sharp.Utils.Data
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    /// The DataReaderStrategy interface.
    /// </summary>
    public interface IDataReaderStrategy : IDisposable
    {
        #region Public Properties

        /// <summary>
        /// Gets the column names.
        /// </summary>
        ICollection<string> ColumnNames { get; }

        /// <summary>
        /// Gets the total record count if known.
        /// </summary>
        long TotalRecordCountIfKnown { get; }

        #endregion Public Properties

        #region Public Indexers

        /// <summary>
        /// The this.
        /// </summary>
        /// <param name="i">
        /// The i.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        object this[int i] { get; }

        #endregion Public Indexers

        #region Public Methods and Operators

        /// <summary>
        /// The get field type.
        /// </summary>
        /// <param name="i">
        /// The i.
        /// </param>
        /// <returns>
        /// The <see cref="Type"/>.
        /// </returns>
        Type GetFieldType(int i);

        /// <summary>
        /// The read.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        bool Read();

        #endregion Public Methods and Operators
    }
}
